#ifndef LIST_DOUBLELIST_DOUBLELISTNODE_H
#define LIST_DOUBLELIST_DOUBLELISTNODE_H

template<typename Type>
class DoublyList;

template<typename Type> class DoubleListNode{
private:
	friend class DoublyList<Type>;
	DoubleListNode():m_pprior(NULL),m_pnext(NULL){}
	DoubleListNode(const Type item,DoubleListNode<Type> *prior=NULL,DoubleListNode<Type> *next=NULL)
		:m_data(item),m_pprior(prior),m_pnext(next){}
	~DoubleListNode(){
		m_pprior=NULL;
		m_pnext=NULL;
	}
public:
	Type GetData();
private:
	Type m_data;
	DoubleListNode *m_pprior;
	DoubleListNode *m_pnext;
};

template<typename Type> 
Type DoubleListNode<Type>::GetData()
{
	return this->m_data;
}
#endif